package com.llp.declaresystem.service;

import com.llp.declaresystem.domain.Result;
import com.llp.declaresystem.domain.dto.HighQueryProjectDto;
import com.llp.declaresystem.domain.dto.ProjectDto;
import com.llp.declaresystem.domain.dto.UserDto;
import com.llp.declaresystem.domain.entity.Project;
import com.llp.declaresystem.domain.entity.ProjectCategory;
import com.llp.declaresystem.domain.entity.Unit;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;
import java.util.Set;

/**
* @author NASK
* @description 针对表【unit(单位信息表)】的数据库操作Service
* @createDate 2022-11-23 16:22:50
*/
public interface UnitService extends IService<Unit> {
    /**
     * 根据单位用户uid查询单位信息
     * @param uid
     * @return
     */
    Unit selectUnitInfoByUid(Integer uid);

    /**
     * 修改单位信息
     * @param unit
     * @return
     */
    int updateByUid(Unit unit);

    /**
     * 根据uid修改密码
     * @param userDto
     * @return
     */
    int updatePwdByUid(UserDto userDto);
    /**
     * 通过categoryId查询项目信息
     * @param categoryId
     * @return
     */
    List<Project> selectProjectByCid(Integer categoryId);
    /**
     * 通过uid查找所有项目分类信息
     * @param uid
     * @return
     */
    List<ProjectCategory> selectAllProjectCategory(Integer uid);
    int updateProjectInfo(Project project);

    /**
     * 根据categoryid查询项目分类信息
     * @param categoryId
     * @return
     */
    ProjectCategory selectProjectCategory(Integer categoryId);

    /**
     * 根据categoryid新增项目信息
     * @param project
     * @return
     */
    int insertProject(Project project);

    /**
     * 根据项目内容简单查询
     * @return
     */
    Set<ProjectDto>  selectByProjectContent(String projectContent);

    /**
     * 根据projectId查询项目信息
     * @param pid
     * @return
     */
    Project selectProjectByPid(Integer pid);

    /**
     * 高级查询
     * @param highQueryProjectDto
     * @return
     */
    Set<HighQueryProjectDto> highQueryProject(HighQueryProjectDto highQueryProjectDto);
}
